package leetcode.year2021.month12;

import leetcode.utils.ListNode;

import java.util.List;

// 21. 合并两个有序链表
public class _04_3MergeTwoLists21 {
  /**
   * 思路：注意判空，注意断链
   * @param l1
   * @param l2
   * @return
   */
  public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    ListNode dummy= new ListNode();
    ListNode prev = dummy;
    while (l1 != null || l2 != null){
      if (l1 == null){
        prev.next = l2;
        break;
      }
      if (l2 == null){
        prev.next = l1;
        break;
      }
      if (l1.val > l2.val){
        prev.next = l2;
        l2 = l2.next;
        prev = prev.next;
        prev.next = null;
      } else {
        prev.next = l1;
        l1 = l1.next;
        prev = prev.next;
        prev.next = null;
      }
    }
    return dummy.next;
  }

  /**
   * 21. 合并两个有序链表
   * 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
   *
   *
   *
   * 示例 1：
   *
   *
   * 输入：l1 = [1,2,4], l2 = [1,3,4]
   * 输出：[1,1,2,3,4,4]
   * 示例 2：
   *
   * 输入：l1 = [], l2 = []
   * 输出：[]
   * 示例 3：
   *
   * 输入：l1 = [], l2 = [0]
   * 输出：[0]
   *
   *
   * 提示：
   *
   * 两个链表的节点数目范围是 [0, 50]
   * -100 <= Node.val <= 100
   * l1 和 l2 均按 非递减顺序 排列
   */
}
